home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 24
/
Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso
/
Aminet
/
dev
/
src
/
CdBS_KQSrc0_4.lha
/
KaliosisQuantrum
/
MORB
/
MapEditor.s
< prev
next >
Wrap
Text File
|
1998-01-01
|
4KB
|
244 lines
*
* CdBSian Obviously Universal & Interactive Nonsense (COUIN)
* (Absurdité CdBSienne Manifestement Universelle et Interactive)
* ©1997-1998, CdBS Software (MORB)
* Map Editor
* $Id: MapEditor.s 0.1 1997/09/14 22:00:05 MORB Exp MORB $
*
;fs "_MapEditor"
_MapEditor:
move.l _CurrentGui,MapEdLastGui
lea _SMedClrHandler(pc),a0
move.l a0,_PreHandler
lea _SMedHandler(pc),a0
move.l a0,_PlayfieldClickHandler
lea MapEdGui(pc),a0
bra _ChangeGui
ExitMapEd:
clr.l _PlayfieldClickHandler
move.l MapEdLastGui(pc),a0
bra _ChangeGui
MapEdLastGui:
ds.l 1
MapEdGui:
GENTRY _VGroup,0,0
GENTRY _HGroup,0,0
GENTRY _SmallButton,"X",ExitMapEd
GENTRY _SmallButton,"I",_Iconify
GENTRY _DragBar,MapEdTitle,0
GEND
GENTRY _HGroup,0,0
GENTRY _Button,MELIffBk,_NYI
GENTRY _Button,MELIffBr,_NYI
GEND
GENTRY _HGroup,0,0
GENTRY _Button,MEShBk,_NYI
GENTRY _Button,MEShBr,_NYI
GEND
GENTRY _Selector,0,0
GENTRY _GerflorBank,0,0
GEND
GEND
MapEdTitle:
dc.b "COUIN's Map Editor",0
MELIffBk:
dc.b "Load IFF Gerflor bank",0
MELIffBr:
dc.b "Load IFF Brush",0
MEShBk:
dc.b "Show Gerflor bank",0
MEShBr:
dc.b "Show Gerflor Brushes",0
even
;fe
;fs "_SMedHandler"
SMHLastOffset:
ds.l 1
SMHLastMapAddr:
ds.l 1
_SMedClrHandler:
movem.l SMHLastOffset(pc),d6/a0
move.l a0,d0
beq.s .Schneurfleugleup
moveq #0,d7
move.b (a0),d7
lea pf_Bitmaps(a5),a4
move.l (a4)+,d3
add.l d6,d3
move.l d7,d2
bsr _Gerflor
move.l (a4)+,d3
add.l d6,d3
move.l d7,d2
bsr _Gerflor
move.l (a4)+,d3
add.l d6,d3
move.l d7,d2
bsr _Gerflor
move.l (a4)+,d3
add.l d6,d3
move.l d7,d2
bsr _Gerflor
.Schneurfleugleup:
rts
_SMedHandler:
lea Plf1,a5
add.l d0,d0
add.l pf_X(a5),d0
lsr.l #6,d0
add.l pf_Y(a5),d1
lsr.l #4,d1
move.l pf_Width(a5),d7
mulu d1,d7
add.l d0,d7
add.l pf_Map(a5),d7
sub.l pf_Y16(a5),d1
add.l pf_BufY16(a5),d1
addq.l #4,d1
mulu #LineSize*TileHeight,d1
move.l #BufferHeight*LineSize,d2
cmp.l d2,d1
bcs.s .Ok
sub.l d2,d1
.Ok:
addq.l #4,d0
add.l d0,d0
add.l d0,d1
move.l d1,SMHLastOffset
move.l d7,SMHLastMapAddr
move.l d1,d6
btst #6,$bfe001
bne.s .DontGlueGerflor
move.l d7,a0
move.b #$a,(a0)
clr.l SMHLastMapAddr
.DontGlueGerflor:
lea pf_Bitmaps(a5),a4
move.l (a4)+,d3
add.l d6,d3
moveq #$a,d2
bsr _Gerflor
move.l (a4)+,d3
add.l d6,d3
moveq #$a,d2
bsr _Gerflor
move.l (a4)+,d3
add.l d6,d3
moveq #$a,d2
bsr _Gerflor
move.l (a4)+,d3
add.l d6,d3
moveq #$a,d2
bsr _Gerflor
rts
;fe
;fs "_GerflorBank"
_GerflorBank:
dc.l GBGetMinMax
dc.l 0
dc.l GBRender
dc.l 0 ; GBClick
GBGetMinMax:
move.l #GuiScreenWidth/2,d0
move.l d0,ge_MinWidth(a0)
move.l d0,ge_MaxWidth(a0)
move.l #256,d0
move.l d0,ge_MinHeight(a0)
move.l d0,ge_MaxHeight(a0)
lea ge_Size(a0),a1
move.l a1,ge_Next(a0)
rts
GBRender:
move.l #54,d0
moveq #0,d5
moveq #0,d7
moveq #15-1,d1
.YLoop:
moveq #8,d6
moveq #17-1,d2
.XLoop:
bsr _SelGerflor
addq.l #1,d5
add.l #17,d6
subq.l #1,d0
dbeq d2,.XLoop
add.l #17,d7
tst.l d0
dbeq d1,.YLoop
rts
;fe
;fs "_SelGerflor"
_CurrentGerflorBank:
dc.l Plf1Tiles
_SelGerflor: ; d6/d7=X,Y d5=Gerflor
movem.l d0-1/d5-7/a0-1,-(a7)
mulu #TileWidth*TileHeight*NbPlanes*2,d5
add.l _CurrentGerflorBank(pc),d5
move.l d5,a0
mulu #GuiSelLineSize,d7
move.l d6,d0
lsr.l #4,d0
add.l d0,d7
add.l d0,d7
and.l #$f,d6
move.l _GuiSelBitmap,a1
add.l d7,a1
move.l #GuiSelBufferWidth,d7
moveq #TileHeight*NbPlanes-1,d0
.Loop:
move.w (a0)+,d1
swap d1
clr.w d1
lsr.l d6,d1
or.l d1,(a1)
add.l d7,a1
dbf d0,.Loop
movem.l (a7)+,d0-1/d5-7/a0-1
rts
;fe